package com.hbnu.system.model.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.hbnu.system.config.PostDeserializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 著作表
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("work")
public class WorkDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 著作编号
     */
    @ApiModelProperty(value = "著作编号")
    @TableId(value = "WorkID", type = IdType.ASSIGN_ID)
    private String WorkID;

    /**
     * 统计分类
     */
    @ApiModelProperty(value = "统计分类")
    @TableField("classifi")
    private String classifi;

    /**
     * 所属机构
     */
    @ApiModelProperty(value = "所属机构")
    @TableField("organization")
    private String organization;

    /**
     * 署名单位
     */
    @ApiModelProperty(value = "署名单位")
    @TableField("signedUnit")
    private String signedunit;

    /**
     * 著作名称
     */
    @ApiModelProperty(value = "著作名称")
    @TableField("workName")
    private String workname;

    /**
     * 第一作者
     */
    @ApiModelProperty(value = "第一作者")
    @TableField("leadAuthor")
    private String leadauthor;

    /**
     * 著作类别
     */
    @ApiModelProperty(value = "著作类别")
    @TableField("workCate")
    private String workcate;

    /**
     * 著·编著
     */
    @ApiModelProperty(value = "著作编著")
    @TableField("workMethod")
    private String workmethod;

    /**
     * 出版社名称
     */
    @ApiModelProperty(value = "出版社名称")
    @TableField("pressName")
    private String  pressname;
    /**
     * 通讯作者
     */
    @ApiModelProperty(value = "通讯作者")
    @TableField("correspondingAuthor")
    private String correspondingAuthor;
    /**
     * 出版社级别
     */
    @ApiModelProperty(value = "出版社级别")
    @TableField("pressLevel")
    private String  presslevel;

    /**
     * 出版年月
     */
    @ApiModelProperty(value = "出版年月")
    @TableField("publicDate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate publicdate;

    /**
     * 总字数（万字
     */
    @ApiModelProperty(value = "总字数")
    @TableField("wordsNum")
    private String wordsNum;

    /**
     * 出版地
     */
    @ApiModelProperty(value = "出版地")
    @TableField("publicPlace")
    private String publicplace;

    /**
     * 页码
     */
    @ApiModelProperty(value = "页码")
    @TableField("page")
    private String page;

    /**
     * 是否收到学校资助
     */
    @ApiModelProperty(value = "是否收到学校资助")
    @TableField("schoolSup")
    private String schoolsup;

    /**
     * CIP号
     */
    @ApiModelProperty(value = "CIP号")
    @TableField("CIPNum")
    private String CIPNum;

    /**
     * ISSN或ISBN
     */
    @ApiModelProperty(value = "issn或isbn")
    @TableField("StandardNumber")
    private String Standardnumber;

    /**
     * 研究类别
     */
    @ApiModelProperty(value = "研究类别")
    @TableField("researchCate")
    private String researchcate;

    /**
     * 著作来源
     */
    @ApiModelProperty(value = "著作来源")
    @TableField("workOrigin")
    private String workorigin;

    /**
     * 一级学科
     */
    @ApiModelProperty(value = "一级学科")
    @TableField("firstDiscipline")
    private String firstdiscipline;

    /**
     * 二级学科
     */
    @ApiModelProperty(value = "二级学科")
    @TableField("secondaryDiscipline")
    private String secondarydiscipline;

    /**
     * 是否译成外文
     */
    @ApiModelProperty(value = "是否译成外文")
    @TableField("translate")
    private String translate;

    /**
     * 英文名称
     */
    @ApiModelProperty(value = "英文名称")
    @TableField("englishName")
    private String englishname;

    /**
     * 关键字
     */
    @ApiModelProperty(value = "关键字")
    @TableField("keywords")
    private String keywords;

    /**
     * 英文关键字
     */
    @ApiModelProperty(value = "英文关键字")
    @TableField("englishKeywords")
    private String englishkeywords;

    /**
     * 成果引用采纳情况
     */
    @ApiModelProperty(value = "成果引用采纳情况")
    @TableField("adopt")
    private String adopt;

    /**
     * 成果摘要
     */
    @ApiModelProperty(value = "成果摘要")
    @TableField("summary")
    private String summary;

    /**
     * 附件
     */
    @ApiModelProperty(value="附件")
    @JsonDeserialize(using = PostDeserializer.class)
    private byte[] annex;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @TableField("notes")
    private String notes;

    /**
     * 录入人
     */
    @ApiModelProperty(value = "录入人")
    @TableField("entered")
    private String entered;

    /**
     * 录入人
     */
    @ApiModelProperty(value = "录入人名称")
    private String enteredName;

    /**
     * 录入日期
     */
    @ApiModelProperty(value = "录入日期")
    @TableField("enteredDate")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime entereddate;

    /**
     * 所有作者
     */
    @ApiModelProperty(value = "所有作者")
    @TableField("allAuthor")
    private String allauthor;

    /**
     * 所有作者
     */
    @ApiModelProperty(value = "所有作者名称")
    @TableField("allAuthorName")
    private String allauthorName;

    /**
     * 关联项目
     */
    @ApiModelProperty(value = "关联项目")
    @TableField("associatedProjects")
    private String associatedprojects;

/**
 * 审核结果
 */
    @ApiModelProperty(value = "审核结果")
    @TableField("answer")
    private String status;

    /**
     * 审核学院
     */
    @ApiModelProperty(value = "审核结果")
    @TableField("dept")
    private String dept;

    @ApiModelProperty(value = "审核学院名称")
    @TableField("deptName")
    private String deptName;

    @ApiModelProperty(value="未通过原因")
    @TableField(value = "reason")
    private String reason;

    @ApiModelProperty(value="量化分数")
    @TableField(value = "score")
    private float score;
}
